package yxy.cherry.data.script;

/** Js运算脚本 */
public enum fomula {

	初始武将id("chushiwujiangid", Integer.class),//

	首次单抽武将("shoucidanchouwujiangid", Integer.class),//

	每次三消增加的条件("sanxiaozengzhangtiaojian", Integer.class),//

	三消步数上限("sanxiaobushushangxian", Integer.class),//

	世界等级获取排名名次("shijiedengjipandingmingci", Integer.class),//

	/**（秒） */
	挂机时长("guajishichang", Integer.class),//

	/**（秒） */
	挂机时长最小时间("guajishichangjianglizuixiaoshijian", Integer.class),//

	/** （num为当日已用次数），为0的情况下显示  “免费“ */
	征战快速作战花费元宝("zhengzhankuaisuzuozhanhuafei", Integer.class),//

	/**（秒） */
	征战快速作战收益时间("kuaisuzuozhanshouyishijian", Integer.class),//

	征战快速作战每日次数("zhengzhankuaisuzuozhancishu", Integer.class),//

	武将背包上限初始("wujiangbeibaoshangxianchushi", Integer.class),//

	武将背包上限最高购买次数("wujiangbeibaoshangxiancishu", Integer.class),//

	武将背包每次增长个数("wujiangbeibaoshangxianzengzhang", Integer.class),//

	/** num为已购买次数 */
	武将背包每次增长花费("wujiangbeibaoshangxianhuafei", Integer.class),//

	/** attack1为所受到物理伤害，pdefense物防数值 */
	物理防御减伤("wufangjianshang", Double.class),//

	/** attack2为所受到法术伤害，sefense法防数值 */
	法术防御减伤("fafangjianshang", Double.class),//

	/** attack为伤害（物理或者法术）数值 */
	暴击伤害("baoji", Double.class),//

	/** herodata表中抗暴数值，antiriot为抗暴数值，strikewei为暴击数值 */
	暴击概率("baojilv", Double.class),//

	/** 为herodata表中闪避数值，dodge对方闪避数值，fit自身命中数值 */
	命中概率("mingzhong", Double.class),//

	/** probability为skill表中控制数值，control对方控制数值，resist自身扛控数值  */
	控制buff概率("kongzhizengliang", Double.class),//

	/** 为herodata表中控制数值，burstdrop对方爆伤减免数值，burstdps自身爆伤数值 */
	爆伤增伤百分比("baoshang", Double.class),//

	/** 为herodata表中数值，burstdrop对方物理免伤数值，pdefenseup自身物理增伤数值 */
	物理减伤("wushangjianmian", Double.class),//

	/** 为herodata表中数值，sefenseup对方法术免伤数值，pdefenseup自身法术增伤数值 */
	法术减伤("fashangjianmian", Double.class),//

	/** 为herodata表中数值，therapy对方受疗，treatment自身治疗 */
	治疗增量("zhiliaozengliang", Double.class),//

	/** 攻击、物防、法防、生命、暴击、抗暴、暴伤、爆伤减免、命中、闪避、控制、抗控、初始怒气、治疗、受疗、物攻提升、法攻提升、物理减伤、法术减伤、技能等级 */
	战力计算("zhandouli", Double.class),//

	/** lv为武将等级，attack为herograde表攻击提升参数 */
	武将升级攻击属性提升("shengjigongjitisheng", Double.class),//

	/** lv为武将等级，pdefense为herograde表物防提升参数 */
	武将升级物防属性提升("shengjiwufangtisheng", Double.class),//

	/** lv为武将等级，sefense为herograde表物防提升参数 */
	武将升级法防属性提升("shengjifafangtisheng", Double.class),//

	/** lv为武将等级，life为herograde表物防提升参数 */
	武将升级生命属性提升("shengjishengmingtisheng", Double.class),//

	竞技场每日免费次数挑战("leitaimeirimianfeicishu", Integer.class),//

	竞技场花费元宝购买挑战道具价格("leitaitiaozhandaojugoumaihuafei", Integer.class),//

	/** （秒） */
	竞技场刷新冷却时间("leitaishuaxinlengque", Integer.class),//

	竞技场初始分数("leitaichushifenshu", Integer.class),//

	竞技场跳过战斗条件("jingjichangtiaoguozhandoutiaojian", Integer.class),//

	/** （天） */
	竞技场赛季周期("leitaisaijizhouqi", Integer.class),//

	/** （rankapex为arenadate表中参数，arank为挑战者，brank为被挑战者），cons为连胜场次   被挑战胜利不影响积分   */
	竞技场积分计算公式("leitaijifenjisuan", Double.class),//

	竞技场挑战失败积分("leitaitiaozhanshibaijifenjisuan", Integer.class),//

	/** （num为当日已用次数），为0的情况下显示  “免费“ */
	剿匪每日刷新花费("jiaofeishuaxinmianfeicishu", Integer.class),//

	武将商店刷新花费武将精魄数量("wujiangshangdianshuaxinhuafei", Integer.class),//

	武将商店刷新商品数量上限("wujiangshangdianshangpinshu", Integer.class),//

	夺宝积分商店刷新花费武将精魄数量("duobaojifenshangdianshuaxinhuafei", Integer.class),//

	夺宝积分商店刷新商品数量上限("duobaojifenshangdianshangpinshu", Integer.class),//

	/** （秒） */
	夺宝积分商店免费刷新增长时间("duobaojifenshangdianmianfeicishu", Integer.class),//

	兵法商店刷新花费武将精魄数量("bingfashangdianshuaxinhuafei", Integer.class),//

	兵法商店刷新商品数量上限("bingfashangdianshangpinshu", Integer.class),//

	/** （秒） */
	兵法商店免费刷新增长时间("bingfashangdianmianfeicishu", Integer.class),//

	兵法商店刷新次数上限("bingfashangdianshuaxinshangxian", Integer.class),//

	/** weapongrade表中attack为攻击基础attackup攻击成长，exp为当前经验值 */
	神兵升级攻击属性提升("shenbingshengjigongji", Double.class),//

	/** weapongrade表中life为血量基础lifeup血量成长，exp为当前经验值 */
	神兵升级生命属性提升("shenbingshengjishengming", Double.class),//

	神兵铸魂升级攻击属性提升("shenbingzhuhunshengjigongji", Integer.class),//

	神兵铸魂升级生命属性提升("shenbingzhuhunshengjishengming", Integer.class),//

	修炼塔每日挑战次数("xiuliantameiritiaozhancishu", Integer.class),//

	/** num为当日扫荡次数 */
	修炼塔购买次数花费元宝数("xiuliantasaodanghuafei", Double.class),//

	修炼塔每日购买次数("xiuliantameirigoumaicishu", Integer.class),//

	跨服聊天花费元宝数("kuafuliaotianhuafeiyuanbao", Integer.class),//

	跨服聊天等级限制("kuafuliaotiandengji", Integer.class),//

	跨服聊天VIP等级限制("kuafuliaotianVipLevel", Integer.class),//

	联盟boss每日初始挑战次数("lianmengbosschushicishu", Integer.class),//

	联盟boss每日购买次数("lianmengbossgoumaicishu", Integer.class),//

	/** num为当日购买的次数 */
	联盟boss每日购买花费元宝数("lianmengbossgoumaihuafei", Double.class),//

	/** 本购买的次数 */
	联盟技能重置花费元宝数额("lianmengjinengchongzhihuafei", Integer.class),//

	改名花费元宝个数("gaiminghaufei", Integer.class),//

	积分招募VIP限制等级("jifenzhaomuvip", Integer.class),//

	创建联盟花费元宝数("chuangjianlianmengyuanbao", Integer.class),//

	创建联盟VIP等级("chuangjianlianmengvip", Integer.class),//

	/** 小时 */
	退出联盟再次加入新联盟时间("tuichuzaishengqingshijian", Integer.class),//

	联盟招募花费元宝("lianmengzhaomuhuafei", Integer.class),//

	/** 秒*/
	联盟招募活跃时间("zhaomuhuoyueshijian", Integer.class),//

	/** unionskillupcost表中begincostnum1为道具1消耗初始，costnum1为道具1消耗成长，lv为等级 */
	联盟技能升级花费1("lianmengjinengshengjihuafei1", Double.class),//

	/** unionskillupcost表中begincostnum2为道具2消耗初始，costnum2为道具2消耗成长，lv为等级 */
	联盟技能升级花费2("lianmengjinengshengjihuafei2", Double.class),//

	联盟技能花费1返还比例("lianmengjinengshengjifanhuan1", Integer.class),//

	联盟技能花费2返还比例("lianmengjinengshengjifanhuan2", Integer.class),//

	日常副本每日免费次数("richangfubenmianfeicishu", Integer.class),//

	日常副本额外数花费元宝数("richangfubenewaicishuhuafei", Integer.class),//

	好友数上限("haoyoushangxian", Integer.class),//

	/** num为当日复活次数 */
	过关斩将复活花费元宝数("guoguanzhanjiangfuhuofuhuohuafeiyuanbao", Integer.class),//

	排行榜每日膜拜次数("paihangbnagmeirimobaicishu", Integer.class),//

	武将重生每日使用次数("wujiangchongshengcishu", Integer.class),//

	/** lv为当前武将等级 */
	武将重生花费元宝("wujiangchongshenghuafeiu", Integer.class),//

	武魂殿挑战冷却时间分钟数("wuhundiantiaozhanlengquefenzhong", Integer.class),//

	神将试炼每日充值后最高关卡减去数("shenjiangshilianchushi", Integer.class),//

	联盟战斗等级条件("lianmengzhandengjitiaojian", Integer.class),//

	联盟战人数条件("lianmengzhanrenshutiaojian", Integer.class),//

	联盟站挑战次数("lianmengzhantiaozhancishu", Integer.class),//

	联盟站BUFF等级上限("lianmengzhanbuffdengjishangxian", Integer.class),//

	/** num为当日购买的次数 */
	天梯争雄购买次数元宝花费("tiantizhengxionggoumaicishu", Double.class),//

	七擒孟获挑战次数("menghuotiaozhancishu", Integer.class),//

	七擒孟获挑战购买次数("menghuotiaozhangoumaicishu", Integer.class),//

	奇袭乌巢每轮治疗符使用次数("wuchaozhiliaofucishu", Integer.class),//

	奇袭乌巢每轮毒药使用次数("wuchaoduyaocishu", Integer.class),//

	奇袭乌巢回退关卡("wuchaohuituiguanka", Integer.class),//

	天下第一战力榜单获得资格("tianxiadiyipaimingzige", Integer.class),//

	/** rank为本组战力排名 */
	天下第一积分赛初始分数("tianxiadiyichushijifen", Integer.class),//

	/** active为主动一方当前积分 passive为被动一方当前积分 */
	天下第一积分获得积分规则("tianxiadiyijifenguize", Double.class),//

	天下第一小组赛每日被挑战扣分上限次数("tianxiadiyikoufenshangxian", Integer.class),//

	天下第一积分赛每日可挑战次数("tianxiadiyijifentiaozhancishu", Integer.class),//

	/** num为当日刷新次数，值为0显示 “免费”*/
	天下第一积分赛刷新对手花费元宝("tianxiadiyishuaxinduishouhaufei", Integer.class),//

	火烧赤壁每日挑战次数("chibimeiritiaozhancishu", Integer.class),//

	火烧赤壁购买次数("chibimeirigoumaicishu", Integer.class),//

	火烧赤壁购买花费元宝("chibimeirigoumaihuafei", Integer.class),//

	速战功能VIP条件("suzhanvip", Integer.class),//

	速战功能等级条件("suzhandengjitiaojian", Integer.class),//

	周卡种树兑换比例("zhoukazhongshubili", Integer.class),//

	/** 首次免费 */
	神魔抽卡替换心仪武将花费("shenmchoukaxuanzehuafei", Integer.class),//
	;

	private String funcName;// 方法名
	private Class<?> returnType;// 返回类型

	private fomula(String funcName, Class<?> returnType) {
		this.funcName = funcName;
		this.returnType = returnType;
	}

	public Double doubleValue(Object... params) {
		try {
			if (returnType.equals(Double.class)) {
				return FomulaScript.doubleValue(funcName, params);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return Double.valueOf(0);
	}

	public int intValue(Object... params) {
		try {
			if (returnType.equals(Integer.class)) {
				return FomulaScript.intValue(funcName, params);
			}
			if (returnType.equals(Double.class)) {
				return FomulaScript.doubleValue(funcName, params).intValue();
			}		} catch (Exception e) {
			e.printStackTrace();
		}
		return 0;
	}

	public String string(Object... params) {
		try {
			if (returnType.equals(String.class)) {
				return FomulaScript.stringValue(funcName, params);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}